- master.js
1 | var childprocess = require('child_process'); |
- worker.js
1 | console.log('pid in worker:', process.pid); |
运行结果:
1 | $ node master.js |
其中有两个有趣的点:
在主进程中,使用
worker.on('message', ...)
监听来自子进程的消息,使用process.on('message', ...)
监听给自己发的消息。但是在子进程中,只有process.on('message', ...)
一种消息监听方式,无法区分消息来源。如果有给自己发消息的情况,则必须将对应的消息监听的代码放在消息发送代码前面,否则无法监听到该消息发送。例如将 master.js 的最后一行代码
process.emit('message', '------');
放置到该文件第一行,则运行结果不会输出2: ------
。如果不能控制消息监听代码和消息发送代码的先后顺序,可将给自己发送消息的代码改写为
setImmediate(process.emit.bind(process, 'message', ));